sysroot: Prep refactoring of cleanup logic
authorColin Walters <walters@verbum.org>
Mon, 20 Mar 2017 14:35:40 +0000 (10:35 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Mon, 20 Mar 2017 20:16:12 +0000 (20:16 +0000)
For future work I'm going to tweak how we handle cleanup, and
the private cleanup flags didn't really end up being used - we
only specify "prune repo or not".  So fold that into a boolean for now.

The sysroot deploy logic then has a single "do_postclean" boolean, which is all
I want to expose as public API.

Closes: #744
Approved by: jlebon

src/libostree/ostree-sysroot-cleanup.c
src/libostree/ostree-sysroot-deploy.c
src/libostree/ostree-sysroot-private.h
src/libostree/ostree-sysroot.c

index 2a78d2ce5a8cccd1062ae3252716f41d3197626d..022654c31424bacd662608aacc9f6d2dbb9efd6c 100644 (file)
@@ -515,12 +515,7 @@ ostree_sysroot_cleanup (OstreeSysroot       *self,
                         GCancellable        *cancellable,
                         GError             **error)
 {
-  OstreeSysrootCleanupFlags flags;
-
-  /* Do everything. */
-  flags = OSTREE_SYSROOT_CLEANUP_ALL;
-
-  return _ostree_sysroot_piecemeal_cleanup (self, flags, cancellable, error);
+  return _ostree_sysroot_cleanup_internal (self, TRUE, cancellable, error);
 }
 
 /**
@@ -537,55 +532,41 @@ ostree_sysroot_prepare_cleanup (OstreeSysroot  *self,
                                 GCancellable   *cancellable,
                                 GError        **error)
 {
-  OstreeSysrootCleanupFlags flags;
-
-  /* Do everything EXCEPT pruning the repository. */
-  flags = OSTREE_SYSROOT_CLEANUP_ALL & ~OSTREE_SYSROOT_CLEANUP_PRUNE_REPO;
-
-  return _ostree_sysroot_piecemeal_cleanup (self, flags, cancellable, error);
+  return _ostree_sysroot_cleanup_internal (self, FALSE, cancellable, error);
 }
 
 gboolean
-_ostree_sysroot_piecemeal_cleanup (OstreeSysroot              *self,
-                                   OstreeSysrootCleanupFlags   flags,
-                                   GCancellable               *cancellable,
-                                   GError                    **error)
+_ostree_sysroot_cleanup_internal (OstreeSysroot              *self,
+                                  gboolean                    do_prune_repo,
+                                  GCancellable               *cancellable,
+                                  GError                    **error)
 {
-  gboolean ret = FALSE;
   glnx_unref_object OstreeRepo *repo = NULL;
 
   g_return_val_if_fail (OSTREE_IS_SYSROOT (self), FALSE);
   g_return_val_if_fail (self->loaded, FALSE);
 
-  if (flags & OSTREE_SYSROOT_CLEANUP_BOOTVERSIONS)
-    {
-      if (!cleanup_other_bootversions (self, cancellable, error))
-        goto out;
-    }
+  if (!cleanup_other_bootversions (self, cancellable, error))
+    return FALSE;
 
-  if (flags & OSTREE_SYSROOT_CLEANUP_DEPLOYMENTS)
-    {
-      if (!cleanup_old_deployments (self, cancellable, error))
-        goto out;
-    }
+  if (!cleanup_old_deployments (self, cancellable, error))
+    return FALSE;
 
   if (!ostree_sysroot_get_repo (self, &repo, cancellable, error))
-    goto out;
-  
+    return FALSE;
+
   if (!generate_deployment_refs (self, repo,
                                  self->bootversion,
                                  self->subbootversion,
                                  self->deployments,
                                  cancellable, error))
-    goto out;
-  
-  if (flags & OSTREE_SYSROOT_CLEANUP_PRUNE_REPO)
+    return FALSE;
+
+  if (do_prune_repo)
     {
       if (!prune_repo (repo, cancellable, error))
-            goto out;
+        return FALSE;
     }
 
-  ret = TRUE;
- out:
-  return ret;
+  return TRUE;
 }
index 2321cbba8d7a2f9043f8638e953d427fd38c01e8..6bf01a16ba6b2d793bd0cdb4546de72a30dcef37 100644 (file)
@@ -1703,14 +1703,13 @@ ostree_sysroot_write_deployments (OstreeSysroot     *self,
                                   GError           **error)
 {
   return _ostree_sysroot_write_deployments_internal (self, new_deployments,
-                                                     OSTREE_SYSROOT_CLEANUP_ALL,
-                                                     cancellable, error);
+                                                     TRUE, cancellable, error);
 }
 
 gboolean
 _ostree_sysroot_write_deployments_internal (OstreeSysroot     *self,
                                             GPtrArray         *new_deployments,
-                                            OstreeSysrootCleanupFlags cleanup_flags,
+                                            gboolean           do_clean,
                                             GCancellable      *cancellable,
                                             GError           **error)
 {
@@ -1938,11 +1937,13 @@ _ostree_sysroot_write_deployments_internal (OstreeSysroot     *self,
 
   /* And finally, cleanup of any leftover data.
    */
-  if (!_ostree_sysroot_piecemeal_cleanup (self, cleanup_flags,
-                                          cancellable, error))
+  if (do_clean)
     {
-      g_prefix_error (error, "Performing final cleanup: ");
-      goto out;
+      if (!ostree_sysroot_cleanup (self, cancellable, error))
+        {
+          g_prefix_error (error, "Performing final cleanup: ");
+          goto out;
+        }
     }
 
   ret = TRUE;
index b2def7faaea2441d5f775bbb1312df1710ba18c1..18fc0cb05e634dc9ebc61071538e2209ce934041 100644 (file)
@@ -109,21 +109,14 @@ gboolean _ostree_sysroot_query_bootloader (OstreeSysroot     *sysroot,
 gboolean _ostree_sysroot_bump_mtime (OstreeSysroot *sysroot,
                                      GError       **error);
 
-typedef enum {
-  OSTREE_SYSROOT_CLEANUP_BOOTVERSIONS = 1 << 0,
-  OSTREE_SYSROOT_CLEANUP_DEPLOYMENTS  = 1 << 1,
-  OSTREE_SYSROOT_CLEANUP_PRUNE_REPO   = 1 << 2,
-  OSTREE_SYSROOT_CLEANUP_ALL          = 0xffff
-} OstreeSysrootCleanupFlags;
-
-gboolean _ostree_sysroot_piecemeal_cleanup (OstreeSysroot *sysroot,
-                                            OstreeSysrootCleanupFlags flags,
-                                            GCancellable *cancellable,
-                                            GError **error);
+gboolean _ostree_sysroot_cleanup_internal (OstreeSysroot *sysroot,
+                                           gboolean       prune_repo,
+                                           GCancellable  *cancellable,
+                                           GError       **error);
 
 gboolean _ostree_sysroot_write_deployments_internal (OstreeSysroot     *self,
                                                      GPtrArray         *new_deployments,
-                                                     OstreeSysrootCleanupFlags cleanup_flags,
+                                                     gboolean           do_clean,
                                                      GCancellable      *cancellable,
                                                      GError           **error);
 
index 238ee74ad5bb165106b26f28725e51f506c57dc9..575cb6dfe781b4a509dd717e2b4d91440c03b839 100644 (file)
@@ -1604,8 +1604,7 @@ ostree_sysroot_simple_write_deployment (OstreeSysroot      *sysroot,
     }
 
   if (!_ostree_sysroot_write_deployments_internal (sysroot, new_deployments,
-                                                   postclean ? OSTREE_SYSROOT_CLEANUP_ALL : 0,
-                                                   cancellable, error))
+                                                   postclean, cancellable, error))
     goto out;
 
   ret = TRUE;